<?php
namespace app\common\controller;

// 框架基础控制器
use think\Controller;
// 文件上传基础控制器
use app\common\controller\storage\Upload;
// 阿里云对象存储 OSS
use app\common\controller\storage\AliYunOss;
// 七牛云对象存储 Kodo
use app\common\controller\storage\QiniuKodo;
// 文件存储在本地服务器
use app\common\controller\storage\LocalStorage;

/**
 * 云存储
 */
class CloudStorage extends Upload
{
    /**
     * 初始化方法
     */
    protected function initialize()
    {
        parent::initialize();
        // 阿里云OSS
        $this->aliYunOss = new AliYunOss;
        // 七牛云Kodo
        $this->qiniuKodo = new QiniuKodo;
        // 本地存储
        $this->localStorage = new LocalStorage;
    }

    /**
     * 云存储统一文件上传入口
     * @example (new \app\common\controller\CloudStorage)->upload('img');
     */
    public function upload($name)
    {
        // 判断当前使用的文件存储类型
        switch ($this->storageType) {
            case 1:
                // 七牛云 Kodo
                $obj = $this->qiniuKodo;
                break;
            case 2:
                // 阿里云 OSS
                $obj = $this->aliYunOss;
                break;
            default:
                // 本地存储
                $obj = $this->localStorage;
                break;
        }
        // 上传成功
        // {
        //     "code":1,
        //     "msg":"上传成功",
        //     "url":"https://cdn.itqaq.com/123.png"
        // }
        // 上传失败
        // {
        //     "code":0,
        //     "msg":"没有文件上传"
        // }
        return $obj->upload($name);
    }
}